home *** CD-ROM | disk | FTP | other *** search
/ Scene 96 / Scene 96 International Edition (Zyklop Software) (Disc 2) (1997).iso / misc / coding / pump_src / bw.c < prev    next >
C/C++ Source or Header  |  1995-10-27  |  3KB  |  120 lines

  1.  
  2. #include "pump.h"
  3.  
  4. #include <ctype.h>
  5. #include <stdarg.h>
  6. #include "rle.h"
  7.  
  8. #define NUM_GFX 32
  9. byte *gfx[NUM_GFX];
  10. byte *endlogo;
  11.  
  12. #define NUM_SHUFFLES NUM_GFX
  13.  
  14. #define TIME 15
  15.  
  16. void EPILEPSIA_Do(void) {
  17.     int time, delta, mode = 0;
  18.     int i;
  19.     char buf[256];
  20.  
  21.     for (i = 0; i < NUM_GFX; i++) {
  22.         sprintf(buf, "grt%d.rle", i+1);
  23.         gfx[i] = fload(buf);
  24.         if (!gfx[i])
  25.             BASE_Abort("Load grt%d.rle", i+1);
  26.         //printf("Loaded %s, ", buf);
  27.     }
  28.     // Shuffle el orden de los letreros
  29.     {
  30.         int i, j, k;
  31.  
  32.         for (i = 0; i < NUM_SHUFFLES; i++) {
  33.             j = RND_GetNum() % NUM_GFX;
  34.             k = RND_GetNum() % NUM_GFX;
  35.             if (j != k) {
  36.                 byte *tmp;
  37.                 tmp = gfx[j];
  38.                 gfx[j] = gfx[k];
  39.                 gfx[k] = tmp;
  40.             }
  41.         }
  42.     }
  43.     //puts("");
  44.     for (i = 0; i < NUM_GFX; i++) {
  45.         //printf("Logo %d is now 0x%X, ", i, gfx[i]);
  46.     }
  47.     //puts("");
  48.  
  49.     endlogo = fload("endlogo.rle");
  50.     if (!endlogo)
  51.         BASE_Abort("Load endlogo.rle");
  52.  
  53.  
  54.     while (!DVTInfo->semaphores[4]);
  55.     DVTInfo->semaphores[4]--;
  56.  
  57.  
  58.     VGA_PutColor(0, 0, 0, 0);
  59.     VGA_SetBorder(0, 0, 0);
  60.     VGA_PutColor(255, 63, 63, 63);
  61.  
  62.     VBL_VSync(0);
  63.     time = 0;
  64.     while (!LLK_SpacePressed) {
  65.         RLE_Draw((byte *)0xA0000, gfx[mode]);
  66.         delta = VBL_VSync(1);
  67.  
  68.         if (mode & 1) {
  69.             VGA_PutColor(255, 0, 0, 0);
  70.             VGA_PutColor(0, 63, 63, 63);
  71.             VGA_SetBorder(63, 63, 63);
  72.         } else {
  73.             VGA_PutColor(0, 0, 0, 0);
  74.             VGA_SetBorder(0, 0, 0);
  75.             VGA_PutColor(255, 63, 63, 63);
  76.         }
  77.  
  78.         time += delta;
  79.         if (DVTInfo->semaphores[4]) {
  80.             //printf("Mode era %d, ", mode);
  81.             DVTInfo->semaphores[4]--;
  82.             time = 0;
  83.             mode++;
  84.             if (mode == NUM_GFX)
  85.                 mode = 0;
  86.             //printf("Ahora es %d\n", mode);
  87.         }
  88.         if (DVTInfo->semaphores[6]) {
  89.             DVTInfo->semaphores[6]--;
  90.             break;
  91.         }
  92.     }
  93.     //puts("");
  94.  
  95.     RLE_Draw((byte *)0xA0000, endlogo);
  96.     time = 0;
  97.     for (;;) {
  98.         time += VBL_VSync(1);
  99.         if (time > 70)
  100.             break;
  101.     }
  102.  
  103.     VGA_GetPalette(VBL_Palette, 0, 256);
  104.     VBL_DestPal = NULL;
  105.     VBL_DestRed = 0;
  106.     VBL_DestGreen = 0;
  107.     VBL_DestBlue = 0;
  108.     VBL_FadeMode = VBL_FADEFAST;
  109.     VBL_FadeStartColor = 0;
  110.     VBL_FadeNColors = 256;
  111.     VBL_FadePos = 1;
  112.     VBL_FadeSpeed = 1;
  113.  
  114.     while (VBL_FadePos);
  115.  
  116.     for (i = 0; i < NUM_GFX; i++) {
  117.         free(gfx[i]);
  118.     }
  119. }
  120.